The present invention relates generally to computers, and more particularly to communications between interconnected computer nodes, storage subsystems, and other network devices.
Assessments of server and I/O technologies and their respective marketplaces make clear that cluster communications, including server-to-server communications and server-to-I/O communications, will be increasingly based on a distributed model. Existing server architectures, based on a shared-address-space model, bus-oriented connections to I/O devices and I/O transactions based on a load/store memory model, have limitations.
FIG. 1 illustrates the general architectural model for current generation servers, including a CPU/memory complex 110 coupled to an I/O bridge 112. In the current model, I/O devices are connected to the host node (CPU/memory complex 110) via one or more PCI buses and one or more bridges 112. There are limitations on the number of electrical loads which may be placed on the host bus. Moreover, these configurations are also limited by the PCI bus, which imposes limits both on the number of electrical loads it is capable of supporting and the physical distances at which devices can be placed. Referring to FIG. 1, storage connectivity and proximity are typically restricted to what fits within a single enclosure.
An architecture for I/O pass-through of the present invention overcomes some of the disadvantages and limitations of prior art computer systems by increasing the number of I/O devices that can be connected to a computer system, by increasing the distance at which the I/O devices are located, and by permitting a more distributed architecture.
According to an embodiment of the present invention, a method is provided for remotely executing a bus transaction. The method includes the steps of detecting a bus transaction on a first bus located at a first node, identifying, based on the memory address of the bus transaction, that the first bus transaction is directed to a second node that is remotely located from the first node. The method also includes the steps of wrapping the first bus transaction in a packet for transmission over a network, transmitting the packet over the network to the second node and then unwrapping the first bus transaction from the packet received at the second node. The method further includes the steps of converting the first bus transaction to a second bus transaction that can be executed on a second bus located at the second node and outputting the converted second bus transaction onto the second bus to be executed.